<?php
function logg($msg){
	//为什么log在最后一起输出文件时
	static $i;
	$handler=fopen('log'.$argv[1],'a');
	$a=TRUE;
	if(flock($handler,LOCK_EX,$a)){
		fwrite($handler,$msg);
		fflush($handler);
		flock($handler,LOCK_UN);
	}
	else{
	}
	fclose($handler);
}


//remove_task($argv[1]);
function proc($func,$params){
	return call_user_func($func,json_decode($params,TRUE));
}

//处理任务方法
function pp($arg){
	//logg($_SESSION['a']);
	return json_encode($_SESSION['a']);
}



function finish_one_task($id,$result){
	//logg('1111');
	global $db;
	//logg('2222');
	//logg('update begin '.$argv[1].'------------'.microtime());
	//logg(time().'---------------');
	$r=mysql_query(sprintf("update cmd set state=2,result='%s' where id='%s'",$result,$id));
	//logg(time().'---------------');
	//logg('333');
	//logg('update end '.$argv[1].'------------'.microtime());
}

function remove_task($task_id){
	global $db;
	$r=mysql_query(sprintf("delete from cmd where id='%s'",$task_id));
	
}
logg(time().'---------------');
session_id($argv[4]); //多个文件去攻占session文件 文件锁问题
session_start();
//logg(time().'---------------');
//logg('conn begin '.$argv[1].'------------'.microtime());
$con=mysql_connect('127.0.0.1','root','');
//logg('conn ok '.$argv[1].'------------'.microtime());
//logg(time().'---------------');
$db=mysql_selectdb('proc',$con);
//logg('db ok '.$argv[1].'------------'.microtime());
//logg($argv[1].' '.$argv[2].' '.$argv[3].'-------------\r\n');
//任务处理逻辑段
$result=proc($argv[2],$argv[3]);
finish_one_task($argv[1],$result);
mysql_close($con);
//logg(time().'---------------');
?>